package br.edu.frb.lista.builder;

import br.edu.frb.lista.Lista;
import br.edu.frb.lista.ListaDuplamenteEncadeada;

/**
 * @author Junior
 * @author joelamalio
 */
public class ListaIntegerBuilder {

    private Lista<Integer> lista;

    private ListaIntegerBuilder() {
        lista = new ListaDuplamenteEncadeada<Integer>();
    }

    public static ListaIntegerBuilder novo() {
        return new ListaIntegerBuilder();
    }

    public ListaIntegerBuilder comTamanho(int x) {
        for (int i = 0; i < x; i++) {
            this.lista.inserirNoFim(i + 1);
        }
        return this;
    }
    
    public ListaIntegerBuilder comValor(final Integer valor, final int posicao) {
        this.lista.inserirEm(valor, posicao);
        return this;
    }
    
    public ListaIntegerBuilder comValorNoFim(final Integer valor) {
        this.lista.inserirNoFim(valor);
        return this;
    }
    
    public ListaIntegerBuilder comValorNoInicio(final Integer valor) {
        this.lista.inserirNoInicio(valor);
        return this;
    }

    public Lista<Integer> build() {
        return lista;
    }
}